package com.lzzy.dao;

import com.lzzy.model.domain.Article;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Classname DiscussRepository
 * @Description TODO
 * @Date 2019-3-1 15:51
 * @Created by CrazyStone
 */
/**
 *mapper层，其实就是dao层，主要是做数据持久层的工作，负责与数据库进行联络的一些任务都封装在此。
 *其设计首先是设计DAO的接口，然后在Spring的配置文件中定义此接口的实现类，
 * 然后就可在模块中调用此接口来进行数据业务的处理，而不用关心此接口的具体实现类是哪个类，显得结构非常清晰。
 */
public interface ArticleRepository extends JpaRepository<Article,Integer> {
    // 1、查询id非空的Article文章集合
    public List<Article> findByIdNotNull();

    // 根据id查询文章信息
    @Query("SELECT c FROM t_article c WHERE  c.id = ?1")
    public Article getArticlePaged(Integer id);

    // 文章发分页查询
    @Query("SELECT c FROM t_article c ")
    public List<Article> selectArticleWithPage();

    // 通过id删除文章
    @Transactional
    @Modifying
    @Query("DELETE t_article c WHERE  c.id = ?1")
    public int deleteArticle(Integer id);



    //4、 根据id修改评论articel
    @Transactional
    @Modifying
    @Query("UPDATE t_article c SET c.title = ?1,c.content=?2,c.categories=?3 WHERE  c.id = ?4")
    public int updateArticle(String title,String content,String categories,Integer id);


}
